using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class Weapon4 : MonoBehaviour
{
    public float offset; //Смещение для коррекции угла поворота оружия
    public GameObject bulletOfW4; //Префаб снаряда
    public Transform shotPointOfW4; //Точка выстрела

    //Переменные для обработки ввода и задержки между выстрелами
    private float timeBtwShotesW4;
    public float startTimeBtwShotesW4;
    private GameObject player;
    private GameObject SecondPlayer;

    [HideInInspector] public bool isPause = false; // Флаг постановки игры на паузу

    private void Start() {
        player = GameObject.FindGameObjectWithTag("Player");
        SecondPlayer = GameObject.FindGameObjectWithTag("SecondPlayer");
    }

    private void Update() {   
        if (isPause) return;
        if (PlayerPrefs.GetInt("playersCount") == 1) {
            //Вычисление угла поворота оружия относительно положения мыши
            Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;

            //Отражение угла при повороте в другую сторону
            float flip = player.GetComponent<PlayerController>().facingRight ? 1 : -1;
            float rotz = Mathf.Atan2(difference.y, difference.x * flip) * Mathf.Rad2Deg;

            // Ограничение поворота оружия в заданных пределах
            if (rotz + offset < 50 && rotz + offset > -60)
            transform.rotation = Quaternion.Euler(0f, 0f, (rotz + offset) * flip);
        }

        //Проверка времени между выстрелами
        if (timeBtwShotesW4 <= 0) {   
            //Проверка нажатия левой кнопки мыши
            if (PlayerPrefs.GetInt("playersCount") == 1 && Input.GetMouseButton(0)) Shoot();
            if (gameObject.transform.parent.CompareTag("Player") && Input.GetKey(KeyCode.R)) Shoot();
            if (gameObject.transform.parent.CompareTag("SecondPlayer") && Input.GetKey(KeyCode.KeypadEnter)) Shoot();
        }
        else {
            // Уменьшение времени до следующего выстрела
            timeBtwShotesW4 -= Time.deltaTime;
        }
    }

    public void Shoot() {
        //Создание экземпляра снаряда на указанной точке выстрела
        GameObject tempBullet = Instantiate(bulletOfW4, shotPointOfW4.position, shotPointOfW4.rotation);
        if (gameObject.transform.parent.CompareTag("Player")) tempBullet.transform.Rotate(0, 0, player.GetComponent<PlayerController>().facingRight == true ? -90 : 90);
        if (gameObject.transform.parent.CompareTag("SecondPlayer")) tempBullet.transform.Rotate(0, 0, SecondPlayer.GetComponent<PlayerController>().facingRight == true ? -90 : 90);
        //Сброс задержки
        timeBtwShotesW4 = startTimeBtwShotesW4;
    }
}